/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ufps.cuatro.util.render;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;
import com.ufps.cuatro.util.TipoCaso;
import com.ufps.cuatro.util.Utileria;

/**
 *
 * @author Carlos A. Torres C. 
 */
public class MyPanelCellRendererComponenteWizardIntegrador extends JPanel implements TableCellRenderer{
    private static final long serialVersionUID = 5090358202207741125L;   
    
    public MyPanelCellRendererComponenteWizardIntegrador() {        
        setLayout(new BorderLayout()); 
        setOpaque(false);         
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if(value instanceof ComponenteDistribuidor){
            return this.renderComponente((ComponenteDistribuidor) value, isSelected);            
        }        
        else{
             JLabel labelTexto = new JLabel("");
             add(labelTexto, BorderLayout.CENTER); 
             return this;
        }
    }
    
    private JPanel setIcono(String key, String info, boolean seleccionado){
        ImageIcon icono = Utileria.leerRecursoImagen(key, 16);
        JLabel labelIcono = new JLabel(icono);        
        JLabel labelTexto = new JLabel(info);        
        labelIcono.setOpaque(true);                
        labelTexto.setOpaque(true);        
        if(seleccionado){            
            labelIcono.setForeground(new Color(255,255,255));
            labelIcono.setBackground(new Color(33,66,99));
            labelTexto.setForeground(new Color(255,255,255));
            labelTexto.setBackground(new Color(33,66,99));
        }
        else{
            labelIcono.setForeground(new Color(0,0,0));
            labelIcono.setBackground(new Color(255,255,255));
            labelTexto.setForeground(new Color(0,0,0));
            labelTexto.setBackground(new Color(255,255,255));
        }
        JPanel objPanel = new JPanel();
        objPanel.setLayout(new BorderLayout()); 
        objPanel.setOpaque(false);        
        objPanel.add(labelIcono, BorderLayout.WEST);         
        objPanel.add(labelTexto, BorderLayout.CENTER); 
        return objPanel;
    }  
    
    private Component renderComponente(ComponenteDistribuidor value, boolean isSelected){        
        ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador = 
                (ComponenteDistribuidorGenerador) value;
        ObjetoTipoDatoReflexion objTipo = objComponenteDistribuidorGenerador.getObjTipoDato();
        String strLabel = objComponenteDistribuidorGenerador.getStrLabelName() + " : " + objTipo.getStrClassPath();
        if(objTipo.getObjCaso().geteCaso() == TipoCaso.ePrimitivo){                        
            return this.setIcono(Utileria.ICONO_PRIMITIVO, strLabel, isSelected);
        }
        else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eArray){            
            return this.setIcono(Utileria.ICONO_ARRAY, strLabel, isSelected);
        }
        else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eEnumeracion){            
            return this.setIcono(Utileria.ICONO_ENUMERACION, strLabel, isSelected);
        }
        else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eJDKRegistrado){            
            return this.setIcono(Utileria.ICONO_JDK_REGISTRADO, strLabel, isSelected);
        }
        else if(objTipo.getObjCaso().geteCaso() == TipoCaso.eClaseMundo){            
            return this.setIcono(Utileria.ICONO_CLASE, strLabel, isSelected);
        }            
        else {            
            return this.setIcono(Utileria.ICONO_JDK_NO_REGISTRADO, strLabel, isSelected);
        }   
//         
//        else{
//            JLabel objLbl = new JLabel();
//            objLbl.setToolTipText("Celda sin Asignar");
//            return objLbl;
//        } 
    }
}
